package com.wmx.jdbc_template_app.easypoi;

import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.handler.inter.IExcelDataModel;
import cn.afterturn.easypoi.handler.inter.IExcelModel;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Email;
import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 用户信息
 * 1、可结合 Hibernate Validator 使用，在实体类的属性上加上 validation 校验注解，即可进行基本的数据校验，
 * 2、实现 IExcelModel 、IExcelDataModel 接口，可获取到错误校验信息，以及数据的行号信息。
 * 3、当导入的值无法解析为目标数据类型时，这些错误信息也会被自动记录到errorMsg中，比如常见的数值、日期类型，用户导入不安要求导入。
 * 3、导出类不需要配置校验规则，只需定义要导出的信息即可，但是导入导出公用也没什么影响。
 *
 * @author wangMaoXiong
 * @version 1.0
 * @date 2024/5/19 9:14
 */
@Data
public class User2VO implements Serializable, IExcelModel, IExcelDataModel {

    @NotBlank
    @Excel(name = "姓名")
    private String realName;

    @Excel(name = "性别", replace = {"男_1", "女_2"})
    private Integer sex;

    @Excel(name = "出生日期", format = "yyyy-MM-dd")
    private Date birthday;

    @Length(min = 1, max = 11, message = "请填写正确的手机号")
    @Excel(name = "手机号码")
    private String phone;

    @Excel(name = "固定电话")
    private String tel;

    @Email(message = "请填写正确的邮箱地址")
    @Excel(name = "邮箱")
    private String email;

    @Excel(name = "头像地址")
    private String avatar;

    @Excel(name = "信息")
    private String errorMsg;

    private Integer rowNum;

    @Override
    public Integer getRowNum() {
        return this.rowNum;
    }

    @Override
    public void setRowNum(Integer i) {
        this.rowNum = i;
    }

    @Override
    public String getErrorMsg() {
        return this.errorMsg;
    }

    @Override
    public void setErrorMsg(String s) {
        this.errorMsg = s;
    }
}